package com.ittao.taoaicodeapp.service;


import com.ittao.taoaicodecommon.exception.BusinessException;
import com.ittao.taoaicodemodel.model.entity.User;

/**
 * VIP 限制服务
 */
public interface VipLimitService {

    /**
     * 检查并递增每日应用生成次数
     *
     * @param user 用户
     * @throws BusinessException 如果超出限制
     */
    void checkAndIncrementDailyAppGen(User user);
    /**
     * 检查并递增每日下载次数
     *
     * @param user 用户
     * @throws BusinessException 如果超出限制
     */
    void checkAndIncrementDailyDownload(User user);

    /**
     * 检查并递增每日导出次数
     *
     * @param user 用户
     * @throws BusinessException 如果超出限制
     */
    void checkAndIncrementDailyExport(User user);

    /**
     * 获取用户的最大Token数量配置
     *
     * @param user 用户
     * @return 最大Token数量
     */
    int getMaxTokens(User user);

    /**
     * 获取用户的最大消息记忆条数配置
     *
     * @param user 用户
     * @return 最大消息记忆条数
     */
    int getMaxMessages(User user);

    /**
     * 检查Token数量是否超限
     *
     * @param user 用户
     * @param tokenCount 当前Token数量
     * @throws BusinessException 如果超出限制
     */
    void checkTokenLimit(User user, int tokenCount);


    /**
     * 获取用户今日剩余次数信息
     *
     * @param user 用户
     * @return 剩余次数信息
     */
    String getRemainingLimitsInfo(User user);
}
